import Vue from 'vue'
import App from './App'



Vue.config.productionTip = false

App.mpType = 'app'
import store from '@/store'
Vue.prototype.$store = store

//引入全局变量
import GLOBAL from '@/common/js/global.js'
Vue.prototype.GLOBAL = GLOBAL

//引入全局工具类
import util from '@/common/js/util.js'
Vue.use(util)

//登录start
//来自 graceUI 的表单验证， 使用说明见手册 http://grace.hcoder.net/doc/info/73-3.html
import dataCheck from '@/common/js/graceChecker.js'
Vue.prototype.dataCheck = dataCheck


// // 挂载到全局vue实例上，在页面中可以使用this.$request调用request实例下相应方法
import request from '@/common/js/request.js'
Vue.prototype.$request = request;


//自定义标签防重复点击（h5端可用）
Vue.directive('noMoreClick', {
	inserted(el, binding) {
		el.addEventListener('click', e => {
			//el.style.pointerEvents = 'none';
			store.state.disabled = true;
			setTimeout(() => {
				//el.style.pointerEvents = 'auto';
				store.state.disabled = false;
			}, 1500)
		})
	}
});
// 全局配置
request.setConfig({
	baseUrl: store.state.baseUrl, // 此为测试地址，需加入到域名白名单，或者更改为您自己的线上地址即可
	dataType: 'json', // 可删除，默认为json
	responseType: 'text', // 可删除，默认为text
	// 设置请求头，支持所有请求头设置，也可不设置，去掉header就行
	header: {
		'token': 'BearereyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0IiwianRpIjoiMzIiLCJpYXQiOjE1ODMzODc0MDcsImV4cCI6MTU5MTE2MzQwN30.YUpoQsZYIeZagMoPGKAQcKfeFC2x956PPqB5T5lKp4g',
		'content-type': 'application/json'
	}
});
import md5 from 'js-md5';
// 设置请求拦截器
request.interceptors.request(config => {
	// 配置参数和全局配置相同，此优先级最高，会覆盖在其他地方的相同配置参数
	// 追加请求头，推荐
	let jsonStr = '{}';
	if (typeof config.data === 'string') {
		jsonStr = config.data
	} else if (config.data != undefined) {
		jsonStr = JSON.stringify(config.data);
	}
	//uni.request 数组需要转字符串
	if (config.data instanceof Array) {
		config.data = JSON.stringify(config.data);
	}
	console.log(jsonStr + '/' + store.state.SLAT)
	config.header['sign'] = md5(jsonStr + '/' + store.state.SLAT);

	return config; // 返回修改后的配置，如未修改也需添加这行
});

// 设置响应拦截器
request.interceptors.response(res => {
	console.log(JSON.stringify(res), '请求返回')
	if (res.statusCode == 203) {
		uni.showModal({
			title: '203',
			content: '请求加密异常',
			showCancel: false
		});
		return Promise.reject(res.errMsg);
	}
	if (res.statusCode == 401) {
		store.state.hasLogin = false;
		uni.showModal({
			title: '401',
			content: '登录校验异常请重新登录',
			showCancel: false,
			success: function(res) {
				if (res.confirm) {
					uni.navigateTo({
						url: '/pages/login/login',
					});
				}
			}
		});

		return Promise.reject(res.errMsg);
	}
	if (res.statusCode != 200) {
		console.error(res);
		uni.showModal({
			title: res.statusCode + '',
			content: res.errMsg,
			showCancel: false
		});
		return Promise.reject(res.errMsg);
	}
	if (res.data.code != '200') {
		uni.showModal({
			title: res.data.code,
			content: res.data.msg,
			showCancel: false
		});
		return Promise.reject(res.data.msg);
	}
	return res.data; // 原样返回
});

//登录 end

const app = new Vue({
	store,
	...App
})
app.$mount()
